﻿namespace OutLook.Module.Load.Contracts
{
    using System.Data;
    using OutLook.Model.Domains;
    using System.Collections.Generic;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public interface ILoadContract
    {
        /// <summary>
        /// Downloads load data
        /// </summary>
        /// <param name="fileName">File Name</param>
        /// <returns>Returns table with data</returns>
        DataTable DownloadTheLoad(string fileName);

        /// <summary>
        /// TODO:Nastya
        /// </summary>
        /// <returns>TODO:Nastya</returns>
        DataTable ChargeIndicators();

        /// <summary>
        /// Get list of all distinct element names in composition of all charges
        /// </summary>
        /// <returns>List of all distinct element names in composition of all charges</returns>
        List<string> GetAllChemicalСombinationsInAllCharges();

        /// <summary>
        /// Calculates weight A*component*
        /// </summary>
        void SetWeightForZ();

        /// <summary>
        /// TODO:Nastya
        /// </summary>
        /// <returns>TODO:Nastya</returns>
        DataTable ChargeProperties();

        /// <summary>
        /// Gets current load
        /// </summary>
        /// <returns>Load object</returns>
        Load CurrentLoad { get; set; }

        string CurrentLoadFileName { get; }
    }
}
